【あなたのことを】 GitHubの設定でmainブランチの誤更新を防止しよう 【守りたい】
「よし、修正完了!」
「作業ブランチにpushしてプルリク作成するかー」
「git push っと」
「あ、やべ、今mainブランチだわ。。pushちゃった。。」
こんなことってありませんか?
自分が進めているプロジェクトでは、基本的にプルリクエストが承認されなければmainブランチにマージできない運用となっています。
しかし、GitHubの設定によっては上記のようなミスが起こりうるので、あらためて設定を整理してみました。
プルリクエスト作成時に特定の人物をレビュアーに指定する
GitHubのcode ownersという機能を使い、プルリクエスト時にチームメンバーなどをレビュアーに指定できます。
リポジトリに.github/CODEOWNERS
というファイルを作成し、レビュアーに指定したいアカウント名を指定します。
# @hoge, @fuga, @foo をレビュアーに指定 * @hoge @fuga @foo
その後、GitHubの「Settings -> Branches」を開き、「Branch protection rules」から下記のように設定します。
それぞれ下記のような意味になります。
- Require a pull request before merging
マージにプルリクエストを必須とします。 -
Require approvals
指定した人数以上の承認が必須となります。 -
Require review from Code Owners
.github/CODEOWNERS
で指定したアカウントをレビュアーとして設定します。
プルリクエスト承認後に追加コミットがあった場合は再度レビューする
一旦プルリクエストを承認しても、その後修正が必要になり追加でコミットする場合があります。
その際に、下記を有効にすると再度レビューを強制することが可能となるため、こちらも設定することをおすすめします。
- Dismiss stale pull request approvals when new commits are pushed
新しくレビュー可能なコミットがあった場合、現在の承認を取り消します。
Admin権限にも保護ルールを適用する
実は今までの設定を行っても、Admin権限がある場合はレビューの承認無しでコミットやプッシュを行うことができます。
Admin権限のユーザーであってもレビューを必須とするように、下記を設定することをおすすめします。
- Include administrators
Admin権限のユーザーにも保護ルールを適用する。
強制pushとブランチ削除を無効にする
強制pushとブランチ削除の許可は別項目なので、こちらはチェックを外しておきます(デフォルトで外れています)。
おわりに
これらの設定はデフォルトでは有効になっていないので、チーム開発をする際はなるべく設定することをおすすめします!
人間ミスは犯してしまうので、できるだけ設定で防ぎたいですね!